﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;


//class Solution {
//public:
//    vector<vector<int>> fourSum(vector<int>& nums, int target) {
//        vector<vector<int>> ret;
//        sort(nums.begin(), nums.end());
//        int Ls = 0, Rs = nums.size() - 1;
//        while (Ls < Rs)
//        {
//            int left = Ls + 1, right = Rs - 1, sum = 0;
//            while (left < right)
//            {
//                sum = nums[Ls] + nums[left] + nums[right] + nums[Rs];
//                if (sum > target)
//                {
//                    --right;
//                }
//                else if (sum < target)
//                {
//                    ++left;
//                }
//                else
//                {
//                    ret.push_back({ nums[Ls],nums[left++],nums[right--],nums[Rs] });
//                    // 去重
//                    while (left < right && nums[left] == nums[left - 1]) ++left;
//                    while (left < right && nums[right] == nums[right + 1]) --right;
//                }
//            }
//            if (sum > target)
//            {
//                --Rs;
//                // 去重
//                while (Ls < Rs && nums[Rs] == nums[Rs + 1])
//                    --Rs;
//            }
//            else if (sum < target)
//            {
//                ++Ls;
//                while (Ls < Rs && nums[Ls] == nums[Ls - 1])
//                    ++Ls;
//            }
//            else
//            {
//                --Rs;
//                // 去重
//                while (Ls < Rs && nums[Rs] == nums[Rs + 1])
//                    --Rs;
//                ++Ls;
//                while (Ls < Rs && nums[Ls] == nums[Ls - 1])
//                    ++Ls;
//            }
//        }
//        return ret;
//    }
//};
//int main()
//{
//	return 0;
//}

//int main()
//{
//	// 左值：可以取地址 
//	// 以下的p、b、c、*p、s、s[0]就是常⻅的左值 
//	int* p = new int(0);
//	int b = 1;
//	const int c = b;
//	*p = 10;
//	string s("111111");
//	s[0] = 'x';
//	cout << &p << endl;
//	cout << &b << endl;
//	cout << &c << endl;
//	cout << &(*p) << endl;
//	cout << (void*)&s << endl;
//	cout << (void*)&s[0] << endl;
//	return 0;
//}

int main()
{
	double a = 1.0,b = 2.0;
	// 字面量常量
	20;
	// 表达式求值过程中创建的临时对象
	fmin(10, 20);
	a + b;
	//const int& a = fmin(10, 20);
	// 匿名对象
	string("**********");

	// 以上都是右值，是不能取其地址的
	cout << &20 << endl;
	cout << &fmin(10, 20) << endl;
	cout << &(a + b) << endl;
	cout << &string("**********") << endl;
	return 0;
}